#ifndef LIGHT_H
#define LIGHT_H

#include "Helpers.h"

#include <glm/glm.hpp>

#include <string>

using glm::vec3;
using std::string;

class Light
{
public:

    enum Uniform {POS, COLOR, POWER};

    static unsigned int numLights;

	explicit Light();
    explicit Light(const vec3& pos, const vec3& color, const float& power);
	~Light();

    Light (const Light& rhs);
	Light& operator=(const Light& rhs);

    void setPos(const vec3& pos);
    void setColor(const vec3& color);
    void setPower(const float& power);

    vec3 getPos() const;
    vec3 getColor() const;
    float getPower() const;

    string getUniform(const Uniform uniform) const;

private:

    // Functions.
    void setUniformValues();

    // Variables.
    vec3 m_pos;
    vec3 m_color;
    float m_power;

    string m_uniPos;
    string m_uniColor;
    string m_uniPower;

};

#endif // LIGHT_H